﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Tema2_Adabd
{
    public partial class MainForm : Form
    {
        public MainForm()
        {
            InitializeComponent();
        }

        private void clkInchide(object sender, EventArgs e)
        {
            Application.Exit();
        }

        private void clkAjutor(object sender, EventArgs e)
        {
            string ajutor = @"
                                    Bine ati venit in aplicatia de administrare a produselor!

                1. Pentru a vizualiza produselor existente in baza de date selectati o operatie prin alegerea unei optiuni din 
                combobox-ul din dreapta al etichetei OPERATIE. Apoi alegeti orice alta optiune va ajuta sa obtineti o mai
                usor produsele dorite : filtrare, sortare, cautare. Continuati explorarea prin completarea corespunzatoare
                a campurilor din dreapta si apasati butonul EXECUTA pentru efectuarea operatiilor.
                
                2. Pentru printarea listei complete de produse sub diferite forme alegeti o forma de export si specificati
                calea completa a fisierului de iesire si o EXTENSIE corespunzatoare al acestuia.

                3. Daca aveti drepturi de administrare apasati butoanele corespunzatoare si apoi completati fereastra de interogare
                conform indicatiilor. Acestea sunt disponibile in partea stanga a ferestrei principale. Daca sunteti
                autentificat ca vizitator aceste butoane nu vor fi afisate.
        
                4. Pentru adaugarea/stergerea unui utilizator utilizati meniul din stanga sus a ferestrei principale.
                
                ";
            MessageBox.Show(ajutor,"Instructiuni de utilizare a aplicatiei",MessageBoxButtons.OK,MessageBoxIcon.Information);
        }

        private void clkOperatieSelectata(object sender, EventArgs e)
        {
            if (cbOperatie.SelectedIndex == -1)
                return;

            try
            {
                var item = this.cbOperatie.GetItemText(this.cbOperatie.SelectedItem);

                if (item == "sortare")
                {
                    sortareProduse();
                    return;
                }
                if (item == "listare")
                {
                    listareProduse();
                    return;
                }
                if (item == "filtrare")
                {
                    filtrareProduse();
                    return;
                }
                if (item == "cautare")
                {
                    cautareProdus();
                    return;
                }
               
                throw new Exception("Operatie invalida");
            }
            catch (Exception exp)
            {
                MessageBox.Show(exp.ToString(), "Eroare");
            }
        }

        private void reseteazaControaleDupaOperatie()
        {
            cbOperatie.SelectedIndex = -1;
        }

        private void sortareProduse()
        {
            lbCriteriuDeSortare.Visible = true;
            lbCriteriuDeSortare.Enabled = true;

            cbSorteazaDupa.Visible = true;
            cbSorteazaDupa.Enabled = true;

            RemoveClickEvent(btnExecutaOperatie);
            btnExecutaOperatie.Click += clkExecutaSortare;
        }

        private void reseteazaControaleDupaSortare()
        {
            lbCriteriuDeSortare.Visible = false;
            lbCriteriuDeSortare.Enabled = false;

            cbSorteazaDupa.SelectedItem = -1;
            cbSorteazaDupa.Visible = false;
            cbSorteazaDupa.Enabled = false;

            btnExecutaOperatie.Click -= clkExecutaSortare;
        }

        private void filtrareProduse()
        {
            cbFiltru.Visible = true;
            cbFiltru.Enabled = true;
            lbCriteriu.Visible = true;
            lbCriteriu.Enabled = true;
            
            RemoveClickEvent(btnExecutaOperatie);
            btnExecutaOperatie.Click += clkExecutaFiltrare;
        }

        private void reseteazaControaleDupaFiltrare()
        {
            cbFiltru.SelectedItem = -1;

            cbFiltru.Visible = false;
            cbFiltru.Enabled = false;

            lbCriteriu.Visible = false;
            lbCriteriu.Enabled = false;

            btnExecutaOperatie.Click -= clkExecutaFiltrare;

            txtValFiltru.Enabled = false;
            txtValFiltru.Visible = false;
            lbValFiltru.Enabled = false;
            lbValFiltru.Visible = false;
        }

        private void listareProduse()
        {
            RemoveClickEvent(btnExecutaOperatie);
            btnExecutaOperatie.Click += clkExecutaListare;
        }

        private void reseteazaControaleDupaListare()
        {
            btnExecutaOperatie.Click -= clkExecutaListare;
        }

        private void cautareProdus()
        {
            txtProdusDeCautat.Visible = true;
            txtProdusDeCautat.Enabled = true;

            lbProdusDeCautat.Visible = true;
            lbProdusDeCautat.Enabled = true;

            RemoveClickEvent(btnExecutaOperatie);
            btnExecutaOperatie.Click += clkExecutaCautare;
        }

        private void reseteazaControaleDupaCautare()
        {
            lbProdusDeCautat.Visible = false;
            lbProdusDeCautat.Enabled = false;
            txtProdusDeCautat.Visible = false;
            txtProdusDeCautat.Enabled = false;

            btnExecutaOperatie.Click -= clkExecutaCautare;
        }

        private void clkAdminBrandCat(object sender, EventArgs e)
        {
            bool areDreptul = false;
            foreach (var p in utilizator.permisiuni)
                if (p == "adaugare produs" | p == "editare produs")
                {
                    areDreptul = true;
                    break;
                }
            if (areDreptul == false)
            {
                MessageBox.Show("Nu aveti aceasta permisiune.", "", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }
            AdminBrandCat form = new AdminBrandCat(utilizator);
            form.Show();

        }

        private void clkArataPret(object sender, EventArgs e)
        {
            string cf = this.cbFiltru.GetItemText(this.cbFiltru.SelectedItem);
            if (cf == "pret")
            {
                lbLimitaInferioara.Visible = true;
                lbLimitaInferioara.Enabled = true;
                lbLimitaSuperioara.Visible = true;
                lbLimitaSuperioara.Enabled = true;

                txtLimitaInferioara.Visible = true;
                txtLimitaInferioara.Enabled = true;
                txtLimitaSuperioara.Visible = true;
                txtLimitaSuperioara.Enabled = true;
            }
            else
            {
                if (cf != "produse sterse temporar")
                {
                    lbValFiltru.Enabled = true;
                    lbValFiltru.Visible = true;
                    txtValFiltru.Enabled = true;
                    txtValFiltru.Visible = true;
                }
            }
        }

    }
}
